/**
 * 
 */
package fr.gfi.agraf.persistence.dao;

import java.util.List;

/**
 * @author eleve
 *
 */
public interface IAbstractGenericDAO<T> {

	/**
	 * Persist une entité en base
	 * 
	 * @param entity
	 *            à persister
	 */
	public void persist(final T entity);

	/**
	 * Update une entité en base
	 * 
	 * @param entity
	 *            à update
	 */
	public void update(final T entity);

	/**
	 * Supprime une entité en base selon l'id
	 * 
	 * @param id
	 *            de l'entité à supprimer
	 */
	public void delete(final Long id);

	/**
	 * Renvoi l'objet depuis la base selon l'id passé en paramètre
	 * 
	 * @param id
	 *            de l'objet à trouver
	 * @return l'objet matché par l'id en parametre
	 */
	public T read(final Long id);

	/**
	 * Renvoie la liste de tous les entités de la table
	 * 
	 * @return la liste complete des entités en base
	 */
	public List<T> listerTous();

}
